// 操作牌相关的js代码

// 牌组的数组
let cards;

/**
 * 初识化牌组
 */
function initCards() {

    // 最终目标
    cards = [];

    // 牌组：54张（先生成好放进去）
    let result = [];

    /**
     * 洗牌方法（只有初始化的时候用，所以放到这里）
     * 洗牌，并完成牌组（cards）的初始化
     */
    function shuffle() {
        // 获取牌的长度
        let length = result.length;
        for (let i = 0; i < length; i++) {
            let index = getRandom(result.length);
            // 根据随机数，拿出一张牌，放到最终牌组上
            let m = result.splice(index, 1)[0];
            cards.push(m);
        }
    }


    // 花色数组
    let suits = ["黑桃", "红心", "梅花", "方块"];
    // 点数数组
    let points = [];
    // 循环放入点数
    for (let i = 1; i <= 13; i++) {
        points.push(i);
    }
    // 采用双层for循环，排列出所有的花色和点数组合，放入结果数组中
    for (let s = 0; s < suits.length; s++) {
        for (let i = 1; i <= 13; i++) {
            result.push({ point: i, suit: suits[s] });
        }
    }
    shuffle();
}




/**
 * 传入idx索引，进行切牌操作
 */
function cutCards(idx) {
    // 根据数组长度和idx，计算出n
    let n = cards.length - idx;
    let result = cards.splice(idx, n);
    result.reverse();
    for (let v of result) {
        cards.unshift(v);
    }
    console.log("切完牌:", cards);
}

/**
 * 获取随机数[0,max)
 */
function getRandom(max) {
    return Math.floor(Math.random() * max);
}

// 初始化
initCards();

// 切牌
// cutCards(3);